package Model

type Topic struct {
	/* Id */
	TopicId int `json:"topic_id"`

	/* 标题 */
	TopicTitle string `json:"topic_title" binding:"required"`
}

/* 创建Topic对象 */
func CreateTopic(id int, title string) Topic {
	return Topic{id, title}
}

/* 查询绑定 */
type TopicQuery struct {
	/**
	json:相当于绑定一个别名
	form:对应输入参数
	binding:required表示此参数必有，否则报错
	*/
	UserName string `json:"username" form:"username" binding:"required"`
	Page     int    `json:"page" form:"page"`
	Size     int    `json:"size" form:"size"`
}

/*内置验证器的使用*/
type TopicPlus struct {
	/* Id */
	TopicId int `json:"topic_id"`

	/* 标题 */
	TopicTitle string `json:"topic_title" binding:"min=4,max=20"`

	/* 短标题  nefield不能与要求的字段重复 */
	TopicShortTitle string `json:"topic_s_title" binding:"required,nefield=TopicTitle"`

	/* 用户IP*/
	UserIP string `json:"ip" binding:"ipv4"`

	/* 分数 要大于5 */
	TopicScore int `json:"score" binding:"gt=5"`

	/* 链接 */
	TopicUrlParam string `json:"url" binding:"omitempty,topicUrl"`
}

/*批量新增*/
type Topics struct {
	/* 定义一个切片 gt 大于  lt 小于*/
	//dive是使Topic里面定义的规则生效！
	TopicList []Topic `json:"topics" binding:"gt=0,lt=3,dive"`
	TopicSize int     `json:"size"`
}

type TopicClass struct {
	ClassId     int    `json:"class_id" gorm:"primary_key"`
	ClassName   string `json:"class_name"`
	ClassRemark string `json:"class_remark"`
}
